

/***
 * 订阅者（观察者）
 */
class Iview{
    notify(obj){
        throw new Error("mast impl")
    }
}
/***
 * 发布者（被观察者）
 */
class IData{
    addView(){

    }
    removeView(){

    }
    notify(obj){

    }
}
class Data extends IData{
    pages = []
    addView(view){
        this.pages.push(view)
        return this
    }
    // setData(obj){
    //     this.obj = obj
    //     this.notify(obj)
    // }
    // getData(){
    //     return this.obj
    // }
    removeView(view){
        this.pages =  this.pages.filter(v=>v!=view)
    }
    notify(obj){
        this.pages.forEach(view=>{
            view.update(obj)
        })
    }
}
class PageA extends Iview{
    update(obj){
        // if(obj.type =1)
        console.log("pageA页面更新数据",obj)
    }
}

class PageB extends Iview{
    update(obj){
        console.log("pageB页面更新数据",obj)
    }
}

class PageC extends Iview{
    update(obj){
        console.log("pageB页面更新数据",obj)
    }
}

// const data = new Data()
// const pageA = new PageA()
// const pageB = new PageB()
// const pageC = new PageC()
// data.addView(pageA).addView(pageB).addView(pageC)
// setTimeout(_=>{
//     data.notify("新数据")
// },1000)

